/**
 * 图片URL处理工具函数
 */

/**
 * 获取默认图片URL
 */
const getDefaultImageUrl = () => {
  // 使用在线图片作为默认图片，避免循环加载
  return 'https://via.placeholder.com/800x400/cccccc/666666?text=No+Image'
}

/**
 * 获取图片完整URL
 * @param {string} url - 图片路径
 * @returns {string} - 完整的图片URL
 */
export const getImageUrl = (url) => {
  if (!url) return getDefaultImageUrl()
  
  // 如果是完整URL（包含协议），直接返回
  if (url.startsWith('http://') || url.startsWith('https://')) {
    return url
  }
  
  // 如果是前端静态文件路径，直接返回
  if (url.startsWith('/images/')) {
    return url
  }
  
  // 如果是上传文件路径
  if (url.startsWith('/uploads/')) {
    // 开发环境使用 Vite 代理
    return url
  }
  
  // 如果是相对路径但不以 / 开头，添加 /uploads/ 前缀
  if (!url.startsWith('/')) {
    return `/uploads/${url}`
  }
  
  // 其他以 / 开头的路径，直接返回（由 Vite 代理处理）
  return url
}

/**
 * 处理图片加载错误
 * @param {Event} e - 图片错误事件
 */
export const handleImageError = (e) => {
  const target = e.target
  const defaultUrl = getDefaultImageUrl()
  
  // 如果已经是默认图片，不再重试，避免无限循环
  if (target.src === defaultUrl || target.dataset.errored === 'true') {
    console.warn('图片加载失败，已使用默认图片')
    return
  }
  
  // 标记已经尝试过错误处理
  target.dataset.errored = 'true'
  // 设置为默认图片
  target.src = defaultUrl
}

/**
 * 获取视频完整URL
 * @param {string} url - 视频路径
 * @returns {string} - 完整的视频URL
 */
export const getVideoUrl = (url) => {
  if (!url) return ''
  
  // 如果是完整URL，直接返回
  if (url.startsWith('http')) {
    return url
  }
  
  // 如果是上传文件路径，添加后端服务器前缀
  if (url.startsWith('/uploads/')) {
    return `http://localhost:8080${url}`
  }
  
  // 其他情况，添加后端服务器前缀
  return `http://localhost:8080${url}`
}


